Rebalance是一個動態分配Partition給不同 Consumer Instance的過程。
Group Coordinator是一種Kafka broker,負責管理 Consumer Group 內的 Consumer 分配關係和 Offset 狀態。每個Consumer會定期發送心跳訊號(Heartbeat)給Group Coordinator,藉此維護以下資訊:
Rebalance的具體操作由Group Coordinator 負責,目前 Kafka 支援3種分配策略:
當一個Consumer Instance要加入Group 時,會向Group Coordinator發送JoinGroup請求。
第一個成功加入的 Consumer 會被選為Group Leader,負責決定每個Consumer應該消費哪些Partition。
其過程如下:
由Group Coordinator
將分配結果通知給所有 Consumer。值得注意的是,只有Group Leader擁有所有Partition與Consumer的指派清單,其餘的Consumer只會知道自己被分配到的 Partition。
本章介紹了Rebalance的底層運作機制,以及Group Leader,GroupLeader,和Consumer Instance這些角色的互動。 下一張將以圖例,以及假設本專案會遇到的情境當例子,來說明Rebalance在實際場景是如何運作的。